home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 5184 < prev    next >
Encoding:
Text File  |  1996-08-05  |  2.8 KB  |  75 lines

  1. Path: uni-erlangen.de!winx03!sunshine!schoof
  2. From: schoof@informatik.uni-wuerzburg.de (Jochen Schoof)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: What's your compiler's answer?
  5. Date: 8 Feb 1996 11:09:00 GMT
  6. Organization: University of Wuerzburg, Germany
  7. Message-ID: <4fclkc$shq@winx03.informatik.uni-wuerzburg.de>
  8. References: <1996Feb7.140945.28351@cs.rit.edu>
  9. NNTP-Posting-Host: wi2x01.informatik.uni-wuerzburg.de
  10. X-Newsreader: TIN [version 1.2 PL2]
  11.  
  12. Kenneth A Reek (kar@cs.rit.edu) wrote:
  13. :     In preparing some materials for a course, I wrote the following
  14. : program to illustrate that the order of expression evaluation is not
  15. : determined completely by the precedence of the operators involved.  I
  16. : ran it on every compiler I could find and, not surprisingly, got lots of
  17. : different answers.
  18.  
  19. Let me tell you your example is not a good proof for this, because
  20. it may produce ANY result. Changing a variable more than once between
  21. sequence points (as you do with i) invokes undefined behaviour.
  22.  
  23. :     I'd like to get results from this program for as many different
  24. : compilers as I can to drive home the point that expressions of this
  25. : sort must be avoided.  If you have access to a C compiler OTHER THAN
  26.  
  27. They must be avoided, but the reason is not the undetermined order of
  28. evaluation, but the fact that a compiler is free to do literally
  29. anything after evaluating this expression.
  30.  
  31. : THE ONES LISTED BELOW, I'd be grateful if you could run this program 
  32. : and send me the results.  Please include the operating system you are
  33. : using (if appropriate to the identification of the compiler) and the
  34. : compiler version number if it has one.
  35.  
  36. What would you do if I told you that the program compiled with Joscho C
  37. made my monitor implode? At least this would not keep the compiler from
  38. being ANSI-compliant :-)
  39.  
  40. : Here's the program (hold on to your hats):
  41. :
  42. :     int main(){
  43. :         int i = 10;
  44. :
  45. :         i = i-- - --i * ( i = -3 ) * i++ + ++i;
  46. :         printf( "i = %d\n", i );
  47. :         return 0;
  48. :     }
  49. :
  50. : Results found to date:
  51. :
  52. : 21    Borland C/C++ 4.0, Turbo C++ 4.5
  53. : -86    Sun 3/50 cc
  54. : -85    Sun Sparc cc, SunOS 4.1.4 (a K&R compiler)
  55. : 4    Sun Sparc acc, SunOS 4.1.4 (an ANSI compiler)
  56. : 36    DEC VAX/VMS
  57. : 21    Silicon Graphics Indy, IRIX 5.3
  58. : -63    gcc 2.6.3
  59.  
  60. monitor imploded - Joscho C on a HAL 9000 ;-)
  61.  
  62. Greetings
  63.  
  64. - Jochen
  65.  
  66. --
  67. --------------------------------------------------------------------------
  68.  Jochen Schoof                  mailto:schoof@informatik.uni-wuerzburg.de
  69.  Lehrstuhl fuer Informatik II +-------------------------------------------
  70.  Universitaet Wuerzburg       | You are just reading a .sig-light:
  71.  D-97074 Wuerzburg (Germany)  | It is free of fat, sugar and cholesterol!
  72. ------------------------------+-------------------------------------------
  73.  WWW-Homepage:        http://www.informatik.uni-wuerzburg.de/staff/joscho
  74. --------------------------------------------------------------------------
  75.